//
//  Person.m
//  Runtime归档解档
//
//  Created by youmy on 2018/1/15.
//  Copyright © 2018年 youmy. All rights reserved.
//

#import "Person.h"
#import <objc/runtime.h>
#import "Archiver.h"

@implementation Person

ArchiverM(Person)

//- (void)encodeWithCoder:(NSCoder *)encoder{
//    unsigned int count = 0;
//    Ivar * ivars = class_copyIvarList([Person class], &count);
//
//    for (int i = 0; i < count; i++) {
//        // 取出i位置对应的成员变量
//        Ivar ivar = ivars[i];
//        // 查看成员变量
//        const char * name = ivar_getName(ivar);
//        // 归档
//        NSString * key = [NSString stringWithUTF8String:name];
//        id value = [self valueForKey:key];
//        [encoder encodeObject:value forKey:key];
//    }
//    free(ivars);
//}
//
//- (instancetype)initWithCoder:(NSCoder *)decoder{
//    if (self = [super init]) {
//        unsigned int count = 0;
//        Ivar * ivars = class_copyIvarList([Person class], &count);
//
//        for (int i = 0; i < count; i++) {
//            // 取出i位置对应的成员变量
//            Ivar ivar = ivars[i];
//            // 查看成员变量
//            const char * name = ivar_getName(ivar);
//            // 解档
//            NSString * key = [NSString stringWithUTF8String:name];
//            id value = [decoder decodeObjectForKey:key];
//            // 设置到成员变量身上
//            [self setValue:value forKey:key];
//        }
//        free(ivars);
//    }
//    return self;
//}
@end
